package Solutions;

/**
 * @Classname MinArray
 * @Description TODO
 * @Date 2021/6/16 16:57
 * @Created by ASUS
 * 把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。输入一个递增排序的数组的一个旋转，
 * 输出旋转数组的最小元素。例如，数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转，该数组的最小值为1。
 *
 * 示例 1：
 *
 * 输入：[3,4,5,1,2]
 * 输出：1
 *
 * 示例 2：
 *
 * 输入：[2,2,2,0,1]
 * 输出：0
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class MinArray {
    /***
     * 执行结果：
     * 通过
     * 显示详情
     *
     * 添加备注
     * 执行用时：1 ms, 在所有 Java 提交中击败了26.77% 的用户
     * 内存消耗：38.2 MB, 在所有 Java 提交中击败了60.32% 的用户
     */

    public int minArray(int[] numbers) {
        if (numbers.length == 1) return numbers[0];
        int left = 0, right = numbers.length - 1;
        while (left < right) {
            if (numbers[left] > numbers[right]) left++;
            if (numbers[left] <= numbers[right]) right--;
        }
        return numbers[left];
    }

    public static void main(String[] args) {
        int[] array = {5,6,7,8,9,1,2,3};
        System.out.println(new MinArray().minArray(array));
    }
}
